Learn in 10 minutes

Learn in 10 minutes

Aprende MATLAB en 10 Minutos

MATLAB (Matrix Laboratory) es un lenguaje de programacion de alto nivel y un entorno diseñado para computacion numerica, desarrollo de algoritmos y visualizacion de datos. Originalmente desarrollado a finales de los anos 1970, MATLAB se ha convertido en una herramienta esencial en ingenieria, ciencia y matematicas.

Este tutorial cubre los fundamentos de MATLAB y te ayudara a comenzar con este poderoso entorno de computacion.

1. Tu Primer Programa en MATLAB

Crea un archivo de script llamado hello.m o escribe comandos directamente en la ventana de comandos de MATLAB.

disp('Hello, World!')

O usando la funcion fprintf:

fprintf('Hello, World!\n')

La salida sera:

Hello, World!

La funcion disp() muestra el contenido directamente, mientras que fprintf() ofrece mas control de formato, similar al printf de C.

2. Sintaxis Basica

MATLAB tiene sus propias reglas de sintaxis que difieren de la mayoria de los lenguajes de programacion de proposito general. Comprender estos conceptos basicos es esencial para escribir codigo limpio y mantenible.

2.1 Comentarios

Los comentarios de una sola linea comienzan con el signo de porcentaje %:

% This is a comment
x = 10;  % This assigns 10 to x

Los comentarios de multiples lineas usan %{ y %}:

%{
This is a multi-line comment.
It can span multiple lines.
%}

2.2 Punto y coma

El punto y coma ; suppresses output display. Without it, MATLAB muestra el resultado:

x = 5     % Displays: x = 5
y = 10;   % No output, but y is assigned

2.3 Sensibilidad a Mayusculas

MATLAB es sensible a mayusculas. A y a son variables diferentes:

A = 5;
a = 10;
disp(A)  % Output: 5
disp(a)  % Output: 10

2.4 Nombres de Variables

Los nombres de variables deben comenzar con una letra, seguidos de letras, numeros o guiones bajos:

valid_name = 1;
another_valid_name_123 = 2;
% 123invalid = 3;  % Error: cannot start with number

2.5 Operaciones Basicas

MATLAB destaca en operaciones matriciales. Crear una matriz es muy facil:

A = [1 2 3; 4 5 6; 7 8 9]  % 3x3 matrix

Salida:

A =

     1     2     3
     4     5     6
     7     8     9

3. Variables y Tipos de Datos

MATLAB usa tipado dinamico. Las variables se crean cuando se les asigna un valor y su tipo esta determinado por el valor asignado.

3.1 Tipos Numericos

MATLAB almacena todos los numeros como punto flotante de doble precision de manera predeterminada:

% Integer
int_num = 42;

% Float
float_num = 3.14159;

% Scientific notation
sci_num = 2.5e-3;  % 0.0025

3.2 Cadenas

Las variables de cadena usan comillas simples:

str = 'Hello, MATLAB';
str2 = "Hello, MATLAB";  % String array (R2016b+)

Concatenacion de cadenas:

str1 = 'Hello';
str2 = 'World';
combined = [str1 ', ' str2];  % 'Hello, World'

3.3 Logicos (Booleanos)

Los valores logicos son true o false:

flag = true;
result = false;

% Logical operations
a = true;
b = false;
and_result = a && b;    % false
or_result = a || b;     % true
not_result = ~a;        % false

3.4 Arreglos de Caracteres vs Cadenas

MATLAB tiene tanto arreglos de caracteres como objetos de cadena:

% Character array (older style)
char_arr = 'Hello';

% String object (modern style, R2016b+)
str_obj = "Hello";

% String objects are easier to work with
name = "Alice";
greeting = "Hello, " + name;  % Works naturally

4. Estructuras de Datos

MATLAB proporciona varias estructuras de datos para diferentes casos de uso.

4.1 Vectores

Un vector es un arreglo unidimensional:

% Row vector
row_vec = [1 2 3 4 5];

% Column vector
col_vec = [1; 2; 3; 4; 5];

% Using colon operator
range_vec = 1:5;        % [1 2 3 4 5]
step_vec = 0:2:10;      % [0 2 4 6 8 10]

% linspace for evenly spaced values
lin_vec = linspace(0, 10, 5);  % [0 2.5 5 7.5 10]

4.2 Matrices

Las matrices son la base de MATLAB:

% Direct matrix creation
A = [1 2 3; 4 5 6; 7 8 9];

% Accessing elements
element = A(2, 3);  % Returns 6 (row 2, column 3)

% Matrix operations
B = A';            % Transpose
C = A * B;         % Matrix multiplication
D = A .* B;        % Element-wise multiplication

4.3 Arreglos de Celdas

Los arreglos de celdas pueden contener diferentes tipos de datos:

% Create a cell array
cell_arr = {1, 'hello', [1 2 3], true};

% Access cell contents using curly braces
data = cell_arr{2};  % Returns 'hello'

% Access cell using parentheses
sub_cell = cell_arr(1:2);  % Returns {1, 'hello'}

4.4 Estructuras

Las estructuras son como diccionarios con campos nombrados:

% Create a structure
student.name = 'John';
student.age = 20;
student.major = 'Engineering';

% Access fields
disp(student.name);  % Output: John

% Array of structures
students(1).name = 'Alice';
students(1).age = 21;
students(2).name = 'Bob';
students(2).age = 22;

4.5 Tablas

Las tablas son adecuadas para datos tabulares:

% Create a table
Age = [25; 30; 35];
Name = {'Alice'; 'Bob'; 'Charlie'};
Salary = [50000; 60000; 70000];

T = table(Name, Age, Salary);

% Access data
disp(T.Age);
disp(T.Name{1});

5. Operadores

MATLAB proporciona varios operadores para operaciones aritmeticas, comparacion y logicas.

5.1 Operadores Aritmeticos

a = 10;
b = 3;

sum = a + b;           % 13
diff = a - b;          % 7
prod = a * b;          % 30
quot = a / b;          % 3.3333
int_div = floor(a/b);  % 3
mod = mod(a, b);       % 1 (remainder)
pow = a ^ b;           % 1000

5.2 Operadores Elemento a Elemento

Los operadores elemento a elemento funcionan en elementos correspondientes:

A = [1 2 3];
B = [4 5 6];

C = A .* B;  % Element-wise: [4 10 18]
D = A.^2;    % Element-wise square: [1 4 9]

5.3 Operadores de Comparacion

x = 5;
y = 10;

eq = (x == y);    % false
neq = (x ~= y);   % true
gt = (x > y);     % false
lt = (x < y);     % true
ge = (x >= y);    % false
le = (x <= y);    % true

5.4 Operadores Logicos

a = true;
b = false;

and_op = a & b;     % false (element-wise AND)
or_op = a | b;      % true (element-wise OR)
not_op = ~a;        % false
and_short = a && b; % false (short-circuit AND)
or_short = a || b;  % true (short-circuit OR)

6. Control de Flujo

MATLAB proporciona estructuras de control de flujo estandar, pero con una sintaxis diferente de lenguajes como Python.

6.1 if-elseif-else

score = 85;

if score >= 90
    grade = 'A';
elseif score >= 80
    grade = 'B';
elseif score >= 70
    grade = 'C';
else
    grade = 'F';
end

disp(grade)  % Output: B

6.2 switch

La declaracion switch compara una expresion unica contra multiples casos:

day = 'Monday';

switch day
    case {'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'}
        disp('Weekday');
    case {'Saturday', 'Sunday'}
        disp('Weekend');
    otherwise
        disp('Invalid day');
end

6.3 Bucles for

El bucle for itera sobre un rango o arreglo:

% Iterating over a range
for i = 1:5
    disp(i);
end

% Iterating over an array
fruits = {'apple', 'banana', 'orange'};
for fruit = fruits
    disp(fruit{1});
end

% Nested loops for matrix operations
A = [1 2; 3 4];
B = zeros(2, 2);
for i = 1:2
    for j = 1:2
        B(i, j) = A(i, j) * 2;
    end
end

6.4 Bucles while

count = 0;
while count < 5
    disp(count);
    count = count + 1;
end

6.5 Control de Bucles

La declaracion break sale del bucle, y continue salta a la siguiente iteracion:

% Using break
for i = 1:10
    if i == 5
        break;
    end
    disp(i);
end
% Output: 1 2 3 4

% Using continue
for i = 1:5
    if mod(i, 2) == 0
        continue;  % Skip even numbers
    end
    disp(i);
end
% Output: 1 3 5

7. Entrada y Salida

7.1 Entrada del Usuario

Usa la funcion input() para obtener entrada del usuario:

% Get numeric input
num = input('Enter a number: ');

% Get string input
name = input('Enter your name: ', 's');

% Get expression input (evaluates the input)
expr = input('Enter an expression: ');

7.2 Mostrando Salida

Varias funciones muestran salida:

% disp - simple display
disp('Hello');
disp([1 2 3]);

% fprintf - formatted output
name = 'Alice';
age = 25;
fprintf('Name: %s, Age: %d\n', name, age);

% sprintf - create formatted string
str = sprintf('Value: %.2f', 3.14159);
disp(str);

7.3 Especificadores de Formato

Especificadores de formato comunes en MATLAB:

% %s - string
% %d - integer
% %f - floating point
% %.2f - floating point with 2 decimal places
% %e - scientific notation

fprintf('%d %.2f %e\n', 42, 3.14159, 1000)
% Output: 42 3.14 1.000000e+03

8. Funciones

Las funciones en MATLAB generalmente se definen en archivos separados, pero las funciones anonimas proporcionan creacion de funciones en linea.

8.1 Funciones Anonimas

Las funciones anonimas crean funciones simples sin archivos separados:

% Single input
square = @(x) x^2;
disp(square(5));  % Output: 25

% Multiple inputs
add = @(x, y) x + y;
disp(add(3, 4));  % Output: 7

% Multiple expressions
hypot = @(x, y) sqrt(x^2 + y^2);
disp(hypot(3, 4));  % Output: 5

8.2 Archivos de Funciones

Crea un archivo llamado myfunc.m:

function y = myfunc(x)
    y = x^2 + 1;
end

Llama a la funcion:

result = myfunc(5);  % Output: 26

8.3 Funciones con Multiples Salidas

function [sum, prod] = calc(x, y)
    sum = x + y;
    prod = x * y;
end

Llama con multiples salidas:

[s, p] = calc(3, 4);
disp(s);  % 7
disp(p);  % 12

8.4 Argumentos Variables

Usa varargin y varargout para argumentos variables:

function result = sum_all(varargin)
    result = 0;
    for i = 1:length(varargin)
        result = result + varargin{i};
    end
end

% Call with any number of arguments
total = sum_all(1, 2, 3, 4, 5);  % Output: 15

9. Archivos de Script

Los scripts son archivos .m que contienen una secuencia de comandos de MATLAB. Operan sobre datos en el espacio de trabajo:

% save as myscript.m
% Calculate statistics for a dataset
data = [1 2 3 4 5 6 7 8 9 10];

mean_val = mean(data);
std_val = std(data);
max_val = max(data);
min_val = min(data);

fprintf('Mean: %.2f\n', mean_val);
fprintf('Std: %.2f\n', std_val);
fprintf('Max: %d\n', max_val);
fprintf('Min: %d\n', min_val);

10. Manejo de Errores

Usa try-catch para manejo de errores:

try
    result = risky_operation();
catch ME
    fprintf('Error: %s\n', ME.message);
    % Handle the error
    result = 0;
end

Usando error() para lanzar errores:

function result = divide(a, b)
    if b == 0
        error('Division by zero is not allowed');
    end
    result = a / b;
end

11. Operaciones con Archivos

11.1 Guardando y Cargando Datos

% Save variables to file
x = [1 2 3];
y = 'hello';
save('data.mat', 'x', 'y');

% Load variables from file
load('data.mat');

% Save to text file
writematrix(x, 'data.txt');

% Read from text file
data = readmatrix('data.txt');

11.2 Operaciones con Archivos de Texto

% Write to text file
fid = fopen('output.txt', 'w');
fprintf(fid, 'Line 1\n');
fprintf(fid, 'Line 2\n');
fclose(fid);

% Read from text file
fid = fopen('output.txt', 'r');
while ~feof(fid)
    line = fgetl(fid);
    if ischar(line)
        disp(line);
    end
end
fclose(fid);

Usando textscan para lectura estructurada:

fid = fopen('data.txt', 'r');
format = '%s %d %f';
C = textscan(fid, format);
fclose(fid);

name = C{1};
age = C{2};
score = C{3};

12. Graficacion

Las capacidades de graficacion de MATLAB son una de sus caracteristicas mas fuertes.

12.1 Graficacion 2D Basica

x = 0:0.1:2*pi;
y = sin(x);

plot(x, y);
xlabel('x');
ylabel('sin(x)');
title('Sine Wave');
grid on;

12.2 Multiples Graficos

x = 0:0.1:2*pi;

% Subplots
subplot(2, 1, 1);
plot(x, sin(x));
title('Sine');

subplot(2, 1, 2);
plot(x, cos(x));
title('Cosine');

12.3 Personalizacion de Graficos

x = 0:0.1:10;
y1 = x;
y2 = x.^2;

plot(x, y1, 'b-', 'LineWidth', 2);  % Blue solid line
hold on;
plot(x, y2, 'r--', 'LineWidth', 2); % Red dashed line
hold off;

xlabel('X');
ylabel('Y');
legend('Linear', 'Quadratic');
title('Linear vs Quadratic');
grid on;

12.4 Otros Tipos de Graficos

% Bar chart
bar([1 2 3 4], [10 20 15 25]);

% Histogram
data = randn(1000, 1);
histogram(data, 30);

% Scatter plot
x = rand(100, 1);
y = 2*x + randn(100, 1)*0.1;
scatter(x, y);